package com.hn.kiss.modules.sys.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hn.kiss.modules.sys.dto.RoleUserDTO;
import com.hn.kiss.modules.sys.dto.UserRoleDTO;
import com.hn.kiss.modules.sys.entity.UserRole;

/**
 * <p>
 * 用户角色关联 服务类
 * </p>
 *
 * @author zxy
 * @since 2020-08-07
 */
public interface IUserRoleService extends IService<UserRole> {

    UserRole getByPk(String id);

    boolean updateByPk(UserRole userRole);

    boolean removeByPk(String id);

    /**
     * 设置默认角色
     * @param userId
     * @param roleCode
     * @return
     */
    boolean setDefaultRole(String userId, String roleCode);

    /**
     * 用户角色分页列表
     * @param userId
     * @return
     */
    Page<UserRoleDTO> userRolePage(Page page, String userId);

    /**
     * 非用户角色分页列表
     * @param userId
     * @return
     */
    Page<UserRoleDTO> unUserRolePage(Page page, String userId);

    /**
     * 角色用户分页列表
     * @param roleCode
     * @return
     */
    Page<RoleUserDTO> roleUserPage(Page page, String roleCode);

    /**
     * 角色用户分页列表
     * @param roleCode
     * @return
     */
    Page<RoleUserDTO> unRoleUserPage(Page page, String roleCode);

    /**
     * 给用户添加角色
     * @param userId
     * @param rodeCodes
     * @return
     */
    boolean addUserRoles(String userId, String... rodeCodes);

    /**
     * 给角色用户
     * @param rodeCode
     * @param userIds
     * @return
     */
    boolean addRoleUsers(String rodeCode, String... userIds);

    /**
     * 查询单个用户默认角色
     * @param userId
     * @param sign
     * @return
     */
    UserRoleDTO user(String userId,String sign);

}
